package com.xbongbong.saas.model;

import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.IModel;
import com.xbongbong.saas.domain.entity.DepartmentPkEntity;

import java.util.List;
import java.util.Map;

/**
 * 部门Pk实体Model
 *
 * @author 徐俊杰
 * @version v1.0
 * @date 2019/3/20 15:26
 * @since v1.0
 */
public interface DepartmentPkModel extends IModel<DepartmentPkEntity> {

    /**
     * 插入数据
     *
     * @param entity 部门Pk实体数据
     * @return java.lang.Integer
     * @throws XbbException 插入数据异常
     * @author 徐俊杰
     * @date 2019/3/20 16:40
     * @since v1.0
     */
    @Override
    Integer insert(DepartmentPkEntity entity) throws XbbException;

    /**
     * 更新数据
     *
     * @param entity 部门Pk实体数据
     * @return java.lang.Integer
     * @throws XbbException 更新数据异常
     * @author 徐俊杰
     * @date 2019/3/20 16:47
     * @since v1.0
     */
    @Override
    Integer update(DepartmentPkEntity entity) throws XbbException;

    /**
     * 批量更新（更新sort，del和update_time）
     *
     * @param list   部门Pk实体数据列表
     * @param corpid 公司id
     * @throws XbbException 更新数据异常
     * @author 徐俊杰
     * @date 2019/3/24 14:01
     * @since v1.0
     */
    void updateBatch(List<DepartmentPkEntity> list, String corpid) throws XbbException;

    /**
     * 删除数据
     *
     * @param key    主键id
     * @param corpid 公司id
     * @return java.lang.Integer
     * @throws XbbException 删除数据异常
     * @author 徐俊杰
     * @date 2019/3/20 16:50
     * @since v1.0
     */
    Integer deleteByKey(Long key, String corpid) throws XbbException;

    /**
     * 根据id查询数据
     *
     * @param key    主键id
     * @param corpid 公司id
     * @return com.xbongbong.saas.domain.entity.DepartmentPkEntity
     * @author 徐俊杰
     * @date 2019/3/20 16:52
     * @since v1.0
     */
    DepartmentPkEntity getByKey(Long key, String corpid);

    /**
     * 获取部门Pk实体集合
     *
     * @param param 入参
     * @return java.util.List<com.xbongbong.saas.domain.entity.DepartmentPkEntity>
     * @author 徐俊杰
     * @date 2019/3/20 16:54
     * @since v1.0
     */
    @Override
    List<DepartmentPkEntity> findEntitys(Map<String, Object> param);

    /**
     * 获取部门Pk实体数量
     *
     * @param param 入参
     * @return java.lang.Integer
     * @author 徐俊杰
     * @date 2019/3/20 16:55
     * @since v1.0
     */
    @Override
    Integer getEntitysCount(Map<String, Object> param);

    /**
     * 获取部门绩效pk方案
     *
     * @param corpid 公司id
     * @return java.util.List<com.xbongbong.saas.domain.entity.DepartmentPkEntity>
     * @author 徐俊杰
     * @date 2019/3/20 20:01
     * @since v1.0
     */
    List<DepartmentPkEntity> getDepartmentPkList(String corpid);
}
